package com.nanyang.tms.api.service.waybill;

import com.nanyang.common.core.domain.ApiResult;
import com.nanyang.common.core.page.PageBean;
import com.nanyang.tms.api.dto.request.waybill.*;
import com.nanyang.tms.api.dto.response.waybill.*;

import java.util.List;

public interface WaybillRpcService {
    /**
     *
     * <p>listWaybill</p>
     * <p>Description:(查询运单列表)</p>
     *
     * @param param
     * @return
     */
    ApiResult<PageBean<WaybillPageResponse>> listWaybill(WaybillQueryRequest param);

    /**
     *
     * <p>listWaybill</p>
     * <p>Description:(查询轨迹列表)</p>
     *
     * @param param
     * @return
     */
    ApiResult<PageBean<WaybillTrackPageResponse>> listWaybillTrack(WaybillTrackQueryRequest param);

    /**
     *
     * <p>listWaybillReceiptVolume</p>
     * <p>Description:(查询收货材积信息列表)</p>
     *
     * @param waybillCode
     * @return
     */
    ApiResult<List<WaybillReceiptVolumeResponse>> listWaybillReceiptVolume(String waybillCode);
    /**
     *
     * <p>listWaybillReceiptVolume</p>
     * <p>Description:(查询出货材积信息列表)</p>
     *
     * @param waybillCode
     * @return
     */
    ApiResult<List<WaybillShipmentVolumeResponse>> listWaybillShipmentVolume(String waybillCode);

    /**
     * 支出列表
     * @param param
     * @return
     */
    ApiResult<PageBean<WaybillPayFeePageResponse>> listWaybillPayFee(WaybillPayFeeQueryRequest param);
    /**
     * 收入列表
     * @param param
     * @return
     */
    ApiResult<PageBean<WaybillIncomeFeePageResponse>> listWaybillIncomeFee(WaybillIncomeFeeQueryRequest param);

    /**
     * 支出完成
     * @param param
     * @return
     */
    ApiResult<Boolean> completeState(WaybillPayFeeStateRequest param);

    /**
     *
     * <p>Description:(查询收发人)</p>
     *
     * @param waybillCode
     * @return
     */
    ApiResult<WaybillReceiverSenderResponse> waybillReceiverSender(String waybillCode);

    /**
     * 创建轨迹
     * @param supplierNO
     * @return
     */
    ApiResult<Boolean> creatTrack(String  supplierNO);

    /**
     * 轨迹通知
     * @param sign
     * @param body
     * @return
     */
    ApiResult<Boolean> notifyTrack(String sign, String body);

    /**
     *
     * <p>queryDetail</p>
     * <p>Description:(查询运单详情)</p>
     *
     * @param waybillCode
     * @return
     */
    ApiResult<WaybillDetailResponse> queryDetail(String  waybillCode);
}
